package com.isaiah.algorithms.sort;

import java.util.Arrays;

/**
 * @Title:
 * @Description: 归并排序
 * @author: Haijun
 * @emial: isaiah@sohu.com
 * @date 2021/10/2610:31
 */
public class MergeSort {

    private static  Comparable[] tempArr;   // 辅助数组
    public static <T>  void sort(Comparable<T>[] arr){

    }

    /**
     * 对数组a中从索引low到索引hight之间的元素进
     * 行排序
     * @param arr
     * @param low
     * @param hight
     * @param <T>
     */
    private static <T>  void sort(Comparable<T>[] arr, int low, int hight){

    }

    /**
     * 从索引low到所以mid为一个子组，
     * 从索引mid+1到索引hight为另一个子组，
     * 把数组arr中的这两个子组的数据合并成一个有序的大组（从索引low到索引hight）
     * @param arr
     * @param low
     * @param mid
     * @param hight
     * @param <T>
     */
    private static <T> void merge(Comparable<T>[] arr,int low, int mid, int hight){

    }
    /**
     * 判断a是否大于b
     * @param a
     * @param b
     * @param <T>
     * @return
     */
    private static <T> boolean less(Comparable<T> a, Comparable<T> b){
        return a.compareTo((T) b) < 0;
    }




    /**
     * 交换数组arr的i索引与j索引上的元素
     * @param arr
     * @param i
     * @param j
     * @param <T>
     */
    private static <T> void  swap(Comparable<T>[] arr, int i, int j){
        Comparable<T> temp = arr[i];
        arr[i] = arr[j];
        arr[j] = temp;

    }


    public static void main(String[] args) {
        Integer[] arr = {4, 5, 6, 3, 2, 1};
        System.out.println(Arrays.toString(arr));
        sort(arr);
        System.out.println(Arrays.toString(arr));
    }
}
